package com.example.day12_7_12_4.base;


import java.util.ArrayList;

//P层基类
public abstract class BasePresenter<V extends BaseView> {
    public V mView;
    //因为界面销毁的时候,由V层的基类通知BasePresenter界面销毁了
    //收到消息之后需要取消网络请求,但是网络请求的M层对象都是子类创建的,父类拿不到
    //这里创建一个容器,子类在创建M层对象的时候,将对象存储到这个容器中
    private ArrayList<BaseModel> mModels = new ArrayList<>();

    public BasePresenter(){
        initModel();
    }

    //专门用来初始化M层对象的
    public abstract void initModel();

    public  void bindView(V view) {
        mView = view;
    }


    public void onDestory() {
        //1.取消网络请求
        if (mModels.size() >0){
            for (int i = 0; i < mModels.size(); i++) {
                BaseModel model = mModels.get(i);
                //拿到每一个m层的对象,通知界面销毁了
                model.onDestroy();
            }
        }
        //2.取消V和P层关联
        mView = null;
    }

    public void addModel(BaseModel model){
        mModels.add(model);
    }

    public abstract void getData();
}
